import {request} from "@umijs/max";
import {PageParam} from "@/services/common";
import {covertTableData} from "@/utils/tableUtil";

export interface DictDataVO {
  /**
   * 字典编码
   */
  id: number;
  /**
   * 字典排序
   */
  sort?: number;
  /**
   * 字典标签
   */
  label: string;
  /**
   * 字典键值
   */
  value: string;

  /**
   * 颜色类型
   */
  colorType: string;
  /**
   * css 样式
   */
  cssClass: string;
}

export interface DictDataQueryDTO extends PageParam {
  /**
   * 字典编码
   */
  id: number;
  /**
   * 字典排序
   */
  sort: number;
  /**
   * 字典标签
   */
  label: string;
  /**
   * 字典键值
   */
  value: string;
  /**
   * 字典类型
   */
  dictType: string;
  /**
   * 状态（0正常 1停用）
   */
  status: boolean;
  /**
   * 颜色类型
   */
  colorType: string;
  /**
   * css 样式
   */
  cssClass: string;
  /**
   * 备注
   */
  remark: string;
}

export interface DictDataUpdateDTO {
  /**
   * 字典编码
   */
  id?: number;
  /**
   * 字典排序
   */
  sort?: number;
  /**
   * 字典标签
   */
  label?: string;
  /**
   * 字典键值
   */
  value?: string;
  /**
   * 字典类型
   */
  dictType?: string;
  /**
   * 状态（0正常 1停用）
   */
  status?: boolean;
  /**
   * 颜色类型
   */
  colorType?: string;
  /**
   * css 样式
   */
  cssClass?: string;
  /**
   * 备注
   */
  remark?: string;
}

export const getDictDataById = async (id: string) => {
  return request<DictDataVO>(`/api/dictData?id=${id}`, {method: 'GET'})
}

export const getDictDataList = async (params: DictDataQueryDTO) => {
  return request<Array<DictDataVO>>(`/api/dictData/list`, {method: 'GET', params})
}

export const getDictDataPage = async (params: DictDataQueryDTO) => {
  let response = await request<Array<DictDataVO>>(`/api/dictData/page`, {method: 'GET', params})
  return covertTableData(response)
}

export const updateDictData = async (dictDataUpdateDTO: DictDataUpdateDTO) => {
  return request<DictDataVO>(`/api/dictData/update`, {method: 'POST', data: dictDataUpdateDTO})
}

export const saveDictData = async (dictDataUpdateDTO: DictDataUpdateDTO) => {
  return request<DictDataVO>(`/api/dictData/save`, {method: 'POST', data: dictDataUpdateDTO})
}

export const removeDictData = async (id: number) => {
  return request<boolean>(`/api/dictData/remove?id=${id}`, {method: 'POST'})
}

export const getAllDict = async () => {
  return request<Map<string, DictDataVO[]>>(`/api/dictType/allDict`, {method: 'POST'})
}
